{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    " 预测 2012 年每天的单车共享数量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 导入必要工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"D:\\CSDN\\week1\\Bike-Sharing-Dataset\\day.csv\")\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 探索数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x180a15aec88>"
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x180a14c7390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = data[['yr','mnth','cnt']]\n",
    "df = df.groupby(['yr','mnth']).sum()\n",
    "df.reset_index(inplace=True)\n",
    "sns.barplot(x='mnth',y='cnt',hue='yr',data=df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>yr</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3405.761644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5599.934426</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            cnt\n",
       "yr             \n",
       "0   3405.761644\n",
       "1   5599.934426"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = data[['yr','cnt']]\n",
    "df1 = df1.groupby('yr').mean()\n",
    "df1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2012年的数据明显比2011年都高，所以算出均值差，后面训练模型时用到"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [],
   "source": [
    "bias = 5599.934426 - 3405.761644"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "两两特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nGX7HaGbNmU9+fgEDBg3h0qFnc+rAY72O5a1IhNKXH6PZ1aMw81E25UMifyyl8UnnEF76M6F50wl/\nP5tA9wNoftcz0favP4Mrjn6qZBnZ+FplEf55vsc7IjWxRLlGpJmdCwwHwsAc4E3gIaId9OnAgc65\nI83sUaBfrN0PwHnOuQ1m9gBwMvALUAa845x7zszuAc4AlgDLgKXOuTu341KKifEEiUg187sM9DrC\nFu2zZIsj6Dzx857HeR0hae3+48StN5JywbxFXkfYopTMXbyOUE3B347xOsIWtXjmo4S6qMZhHQbE\ntY/25e+ferK/iVI5xzn3PPB8ldlv19Duis08/gY2nTRacf4IYEQN88/boaAiIiIiInGSMJ1zERER\nEZFt5eW1yOMpUU4IFRERERFp8FQ5FxEREZGko8q5iIiIiIjElSrnIiIiIpJ0EuWKg7VNlXMRERER\nkQShyrmIiIiIJJ36OuZcnXMRERERSTqunnbONaxFRERERCRBqHIuIiIiIkmnvp4Qqs75Vqw7e4DX\nETar5Qufeh2hRjmHH+l1hC1qO/lzryOIeMY58zrCZpnVzxdaSUzBvEVeR6im8XW3eh1BEoA65yKS\ntPZZ8q7XEURkM1Iyd/E6wmYlYsdctl99PSFUY85FRERERBKEKuciIiIiknTq65hzVc5FRERERBKE\nKuciIiIiknQ05lxEREREROJKlXMRERERSTr6hlAREREREYkrVc5FREREJOlEdLUWERERERGJJ1XO\nRURERCTpaMy5iIiIiIjElSrntSSw94E0Ofsy8PkIfj6BDe/9t1qblN5H0Piv54JzhH9byPonRwFg\nGW1oOvQ6fK2zACh+8GZc3so6ze+FRr170+LKy8HnZ/3771P80suVljc97jjSLr2YcG4eACVvvMn6\n998HIPXiYTTuczAAxf/+N6WfTarb8CINQLO+B5B968Xg87Hu9Ymseea1SstbnHIUWcMvJLQy+jea\n/9K7rHv9w/LlvubN6DLhaYo+mcqqu5+s1VxtbrmkPNfa8a9WzjXoaDKHDyW0cnU018vvUvD6xMq5\n3h8XzXXPE7WWSxqWEaPGMHnKTFq3SuetF5+q8+1/9c133P/MK0QiEf56dF+GnnZ8peV/rFrN7Y8+\nz9p1hbRMa86oa4bSNrMVAD1PuYiunTsA0DazNY+OuLzO89eG+jrm3NPOuZmdBOzlnBu9meU9gfbO\n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\n5M+KaMy5iIiIiIjEkyrnIiIiIpJ0/szlwBOZKuciIiIiIglClXMRERERSToacy4iIiIiInGlyrmI\niIiIJJ36OuZcnfOtCOWHvI6QdDYU6ddKJFFldi3xOsJmmT7LrVcK/naM1xE2q/F1t3odoUa+zE5e\nR5AEoF6UiIiIiCSdSD2tnKtOISIiIiKSIFQ5FxEREZGk43S1FhERERERiSdVzkVEREQk6dTXq7Wo\nci4iIiIikiBUORcRERGRpFNfvyFUnXMRERERSToa1iIiIiIiInGlyrmIiIiIJB19CZGIiIiIiMSV\nKue1JGX/3jT/2xXg81H68fuUvv5ytTaN+vaj6eDzAEd48UKKHrwbX1Y2abfcDT4fBAKUvvsGGya+\nU+f5vdDkkANpff2l4PdR9OYHFDz330rLmw88hlZXDyO8Kg+AwlfepuitD2jca19aX3dJebuULjuR\ne/M9rP98ap3mF6nvEvW4lrJfb5rFcm34+H1K/1dDrkOjuZyL5ioeE82VetOmXBvebzjH20Tm796L\nJmdcgvl8lH05kbKJr1RrE+h1OI0Hng04IssWsX78aPzd9qXJ6ReXt/G17cT6caMIza2914KvvvmO\n+595hUgkwl+P7svQ046vtPyPVau5/dHnWbuukJZpzRl1zVDaZrYCoOcpF9G1cwcA2ma25tERl9da\nrq0ZMWoMk6fMpHWrdN568ak6225dq69jzhtk59zMugCHOOeqH9F3hM9H84uvpuC264iszqXlmKcJ\nzphCeNnSTU3adaDpaWdRcMNluOIirGU6AJG1q1k3/DIIBaFJU9Ife5aymVNwa1bXSrSE5fPR+sYr\nWHXpjYRW5tLuxcdZ/8VUgot/q9Ss+KPPWXv/Y5XmbZg9jxWDowdkX4s02r/9PKXTv66z6CINQqIe\n13w+ml10NYV3RHO1ePBpymZOIVIlV5PTzqLgxuq5Cm7clKvlIw3keJvIzEfTMy+n+KGbcGvzaH7r\no4TmTSOyYtNrga9NexoffwbF918DJUVYWvTnGV4wj+KRsUJNszTSRj1L6Ifaey0IhyOMevplxt11\nDdkZrRh8/SiO7L0vu+7UvrzNP559jYH9+nBy/0OYMf8nHnnhDUZdMxSAxo0a8drY22stz/YYdMLR\nnHnqSdxy94OebF/+nIY6rKULcGZtrSzQdU/CK34nsnIFhEJsmPwZKQf1rdSmybEDKZ3wJq64CAC3\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x180a14eb358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_corr = data.corr().abs()\n",
    "plt.subplots(figsize=(13, 9))\n",
    "sns.heatmap(data_corr,annot=True,mask=data_corr < 0.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由上图可看出气温摄氏度和体感温度呈强相关，月份和季节呈强相关，考虑到影响自行车租赁量的因素，\n",
    "气温摄氏度和体感温度几乎是同一因素，月份和季节几乎是同一因素。\n",
    "所以为简化模型，丢弃其中2个（气温摄氏度 和 月份），因为体感温度 和 季节 从逻辑上来讲更影响人们活动,\n",
    "因为此次作业不需要预测非注册和注册用户，所以把这两列也丢弃掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data.drop(['instant'],axis=1,inplace=True)\n",
    "data.drop(['temp','casual','registered','mnth'],axis=1,inplace=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder \n",
    "import pandas as pd  \n",
    "from pandas import DataFrame\n",
    "\n",
    "X = data.drop(['cnt','dteday'],axis=1)\n",
    "ohe = OneHotEncoder(categorical_features=[[0,3,5]])  \n",
    "X = ohe.fit_transform(X).toarray()\n",
    "#X = DataFrame(X)\n",
    "#X\n",
    "X = DataFrame(X,columns=['SPRING','SUMMER','AUTUMN','WINTER','Sun','Mon','Tues','Wed','Thur','Fri','Sat','Sunshine','Overcast','Light snow','yr','Holiday','Workingday','atemp','hum','windspeed'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = X[X['yr']== 0.0]\n",
    "X_test = X[X['yr']== 1.0]\n",
    "\n",
    "X_train = X_train.drop(['yr'],axis=1)\n",
    "X_test = X_test.drop(['yr'],axis=1)\n",
    "\n",
    "\n",
    "y_train = data[data['yr']==0]['cnt'].values\n",
    "y_test = data[data['yr']==1]['cnt'].values\n",
    "\n",
    "y_train = y_train + bias"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import  MinMaxScaler\n",
    "\n",
    "# 分别初始化对特征和目标值的标准化器\n",
    "ss_X = MinMaxScaler()\n",
    "ss_y = MinMaxScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征以及目标值进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)\n",
    "\n",
    "#对y做标准化不是必须\n",
    "#对y标准化的好处是不同问题的w差异不太大，同时正则参数的范围也有限\n",
    "y_train = ss_y.fit_transform(y_train.reshape(-1, 1))\n",
    "y_test = ss_y.transform(y_test.reshape(-1, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 确定模型类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1 尝试缺省参数的线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lr = LinearRegression()\n",
    "lr.fit(X_train,y_train)\n",
    "\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "r2 score on test: 0.672240170025\n",
      "r2 score on train: 0.80134740805\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "print('r2 score on test:', r2_score(y_test,y_test_pred_lr))\n",
    "print('r2 score on train:',r2_score(y_train,y_train_pred_lr))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 正则化的线性回归（L2正则 --> 岭回归）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of RidgeCV on test is 0.67260812336\n",
      "The r2 score of RidgeCV on train is 0.801904554468\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import  RidgeCV\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "#n_alphas = 20\n",
    "#alphas = np.logspace(-5,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)  \n",
    "\n",
    "#模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#预测\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2 score of RidgeCV on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print('The r2 score of RidgeCV on train is', r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 正则化的线性回归（L1正则 --> Lasso）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.647280926061\n",
      "The r2 score of LassoCV on train is 0.792043227049\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:1094: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "#alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "#lasso = LassoCV(alphas=alphas)  \n",
    "lasso = LassoCV()  \n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print('The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 结论：用岭回归时模型最佳"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
